Перейти к основному содержимому

5.03. Ключевые классы и интерфейсы Java

Разработчику Архитектору

Ключевые классы и интерфейсы Java

Math

Класс java.lang.Math предоставляет набор статических методов для выполнения базовых и расширенных математических операций. Включает тригонометрические функции, логарифмы, возведение в степень, извлечение корня, работу со случайными числами и округление. Также содержит константы Math.PI и Math.E. Все методы являются static, что позволяет использовать их без создания экземпляра класса.

Метод / АтрибутОписаниеПример
Math.EЧисло Эйлера (e 2.718)System.out.println(Math.E);
Math.PIЧисло Пи (π 3.14159)System.out.println(Math.PI);
Math.abs(x)Возвращает абсолютное значениеMath.abs(-5) → 5
Math.round(x)Округляет до ближайшего целогоMath.round(2.6f) → 3
Math.ceil(x)Наименьшее целое, xMath.ceil(1.2) → 2
Math.floor(x)Наибольшее целое, xMath.floor(1.9) → 1
Math.max(a, b)Возвращает большее из двух чиселMath.max(3, 5) → 5
Math.min(a, b)Возвращает меньшее из двух чиселMath.min(3, 5) → 3
Math.pow(a, b)Возводит a в степень bMath.pow(2, 3) → 8.0
Math.sqrt(x)Квадратный корень из xMath.sqrt(16) → 4.0
Math.random()Случайное число от 0.0 до 1.0Math.random() → 0.73...

Пример:

double result = Math.sqrt(Math.pow(3, 2) + Math.pow(4, 2)); // 5.0

String

Класс java.lang.String предназначен для работы с текстовыми данными. Поскольку строки в Java неизменяемы (immutable), все операции над ними возвращают новый объект. Основные методы позволяют определять длину строки, извлекать символы, сравнивать строки (с учётом и без учёта регистра), изменять регистр, удалять пробелы, выполнять поиск подстрок и разбивать строку на части. Поддерживается форматирование с помощью String.format().

Метод / АтрибутОписаниеПример
str.length()Возвращает длину строки"hello".length() → 5
str.charAt(i)Возвращает символ по индексу i"abc".charAt(1) → 'b'
str.equals(str2)Сравнивает строки с учётом регистра"Java".equals("java") → false
str.equalsIgnoreCase(str2)Сравнивает строки без учёта регистра"Java".equalsIgnoreCase("java") → true
str.toUpperCase()Переводит строку в верхний регистр"hi".toUpperCase() → "HI"
str.toLowerCase()Переводит строку в нижний регистр"Hi".toLowerCase() → "hi"
str.trim()Удаляет пробелы в начале и конце строки" hello ".trim() → "hello"
str.indexOf(char)Индекс первого вхождения символа"abcab".indexOf('b') → 1
str.substring(start, end)Возвращает подстроку от start до end"Hello".substring(1, 4) → "ell"
str.split(regex)Разбивает строку по регулярному выражению"a,b,c".split(",")["a", "b", "c"]
String.format(...)Форматирует строкуString.format("Name: %s", "John") → "Name: John"

Пример:

String trimmed = "  hello  ".trim().toUpperCase(); // "HELLO"

OS

Класс java.lang.System предоставляет доступ к системным ресурсам и окружению. Содержит стандартные потоки ввода-вывода (in, out, err), методы для работы со временем (currentTimeMillis(), nanoTime()), управления памятью (gc()) и завершения приложения (exit()). Также позволяет получать переменные окружения и системные свойства, такие как имя ОС или версия JVM.

Метод / АтрибутОписаниеПример
System.getenv()Получает все переменные окруженияMap<String, String> env = System.getenv();
System.getenv(key)Получает конкретную переменную окруженияSystem.getenv("PATH")
System.getProperties()Получает системные свойства JVMProperties props = System.getProperties();
System.getProperty(key)Получает значение системного свойстваSystem.getProperty("os.name")
System.lineSeparator()Возвращает разделитель строкSystem.lineSeparator()
System.out.println()Выводит текст в консольSystem.out.println("Hello");
System.err.println()Выводит ошибку в консольSystem.err.println("Error!");
System.in.read()Чтение ввода с клавиатурыint ch = System.in.read();
System.currentTimeMillis()Возвращает время в миллисекундахlong ms = System.currentTimeMillis();
System.nanoTime()Возвращает время в наносекундахlong ns = System.nanoTime();
System.exit(0)Завершает работу программыSystem.exit(0);

Пример:

long start = System.currentTimeMillis();
// ... код
System.out.println("Время выполнения: " + (System.currentTimeMillis() - start) + " мс");

File

Класс java.io.File (или современный java.nio.file.Path) используется для работы с файловой системой. Позволяет проверять существование файла или каталога, создавать и удалять файлы, получать метаданные (имя, путь, размер), а также перечислять содержимое директории. Не предназначен для чтения/записи данных — это задача других классов (FileInputStream, Files и т.д.).

Метод / АтрибутОписаниеПример
file.exists()Проверяет, существует ли файлnew File("test.txt").exists()
file.isDirectory()Является ли директориейnew File(".").isDirectory()
file.isFile()Является ли файломnew File("data.txt").isFile()
file.getName()Возвращает имя файла или папкиnew File("data.txt").getName() → "data.txt"
file.getAbsolutePath()Возвращает полный путь к файлуnew File("data.txt").getAbsolutePath()
file.createNewFile()Создаёт новый файлnew File("new.txt").createNewFile()
file.delete()Удаляет файл или папку (если пустая)new File("temp.txt").delete()
file.mkdir()Создаёт новую папкуnew File("newdir").mkdir()
file.listFiles()Возвращает список файлов в директорииFile[] files = new File(".").listFiles();

Пример:

File dir = new File(".");
if (dir.isDirectory()) {
for (File file : dir.listFiles()) {
System.out.println(file.getName());
}
}

Set & Mapping

Интерфейсы Set и Map являются частью Java Collections Framework и используются для хранения уникальных элементов и пар «ключ-значение» соответственно.

Set — коллекция без дубликатов. Реализации: HashSet (быстрый доступ, порядок не гарантируется), LinkedHashSet (сохраняет порядок вставки), TreeSet (поддерживает сортировку).

Метод / АтрибутОписаниеПример
set.add(element)Добавляет элементSet<String> s = new HashSet<>(); s.add("A");
set.contains(element)Проверяет наличие элементаs.contains("A")
set.remove(element)Удаляет элементs.remove("A")
set.size()Возвращает размер множестваs.size()
set.isEmpty()Проверяет, пусто ли множествоs.isEmpty()

Map — ассоциативный массив. Реализации: HashMap, LinkedHashMap, TreeMap.

Метод / АтрибутОписаниеПример
map.put(key, value)Добавляет пару ключ-значениеmap.put("name", "Alice")
map.get(key)Возвращает значение по ключуmap.get("name")
map.containsKey(key)Проверяет наличие ключаmap.containsKey("age")
map.containsValue(value)Проверяет наличие значенияmap.containsValue("Alice")
map.remove(key)Удаляет запись по ключуmap.remove("name")
map.keySet()Возвращает набор всех ключейSet<String> keys = map.keySet();
map.values()Возвращает коллекцию значенийCollection<String> values = map.values();
map.entrySet()Возвращает набор пар ключ-значениеSet<Map.Entry<String, String>> entries = map.entrySet();

Оба интерфейса предоставляют стандартные операции: добавление, удаление, проверка наличия, получение размера.

Пример:

Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");

Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
int age = ages.get("Alice"); // 30

Date & DateTime

Работа с датой и временем в Java прошла эволюцию от устаревших классов Date и Calendar к современному API java.time, введённому в Java 8. Новый API иммутабелен и потокобезопасен.

Основные классы:

  • LocalDate — дата без времени.
  • LocalTime — время без даты.
  • LocalDateTime — дата и время.
  • ZonedDateTime — дата и время с учётом часового пояса.
  • Duration, Period — интервалы времени.

Поддерживается форматирование через DateTimeFormatter.

Метод / АтрибутОписаниеПример
new Date()Создаёт объект текущей даты и времениDate now = new Date();
LocalDate.now()Текущая датаLocalDate today = LocalDate.now();
LocalTime.now()Текущее времяLocalTime time = LocalTime.now();
LocalDateTime.now()Текущие дата и времяLocalDateTime current = LocalDateTime.now();
LocalDate.of(year, month, day)Создаёт датуLocalDate d = LocalDate.of(2023, 1, 1);
plusDays(n)Добавляет дниLocalDate tomorrow = LocalDate.now().plusDays(1);
minusDays(n)Вычитает дниLocalDate yesterday = LocalDate.now().minusDays(1);
format(DateTimeFormatter)Форматирует датуd.format(DateTimeFormatter.ISO_DATE)

Пример:

LocalDateTime now = LocalDateTime.now();
LocalDateTime tomorrow = now.plusDays(1);
String formatted = tomorrow.format(DateTimeFormatter.ISO_DATE_TIME); // "2025-10-31T12:30:45"

Array

Массивы в Java — это контейнеры фиксированного размера для ходинакового типа. Доступ к элементам осуществляется по индексу. Класс java.util.Arrays предоставляет утилиты для работы с массивами: сортировка, поиск, сравнение, заполнение, преобразование в строку.

Поскольку массивы не реализуют Collection, для них нет методов вроде add() или remove().

Метод / АтрибутОписаниеПример
array.lengthВозвращает длину массиваint[] arr = {1,2,3}; arr.length → 3
Arrays.toString(arr)Преобразует массив в строкуArrays.toString(new int[]{1,2,3}) → "[1, 2, 3]"
Arrays.sort(arr)Сортирует массивArrays.sort(arr);
Arrays.binarySearch(arr, key)Поиск элемента в отсортированном массивеArrays.binarySearch(arr, 5)
Arrays.equals(arr1, arr2)Сравнивает два массиваArrays.equals(arr1, arr2)
Arrays.fill(arr, value)Заполняет массив определённым значениемArrays.fill(arr, 0)

Пример:

int[] numbers = {3, 1, 4, 1, 5};
Arrays.sort(numbers);
int index = Arrays.binarySearch(numbers, 4); // 3

Special

Специальные методы классса определены в классе Object и могут быть переопределены в пользовательских классах для изменения поведения по умолчанию.

Метод / АтрибутОписаниеПример
toString()Возвращает строковое представление объектаobj.toString()
equals(Object o)Сравнивает объекты на равенствоobj1.equals(obj2)
hashCode()Возвращает хэш-код объектаobj.hashCode()
getClass()Возвращает метаинформацию о классеobj.getClass()
finalize()Вызывается перед удалением объекта GCНе рекомендуется использовать
clone()Создаёт копию объектаMyClass copy = (MyClass) obj.clone();

Пример:

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof Person p)) return false;
return name.equals(p.name) && age == p.age;
}

@Override
public int hashCode() {
return Objects.hash(name, age);
}